Ext.ns('Tm.task');
Tm.task.TaskBillPanel = Ext.extend(Ext.Panel, {
	id : 'taskBillPanel',
	frame : true,
    autoHeight:true,
    autoWidth:true,
	layout : 'fit',
	taskId : null,
	initComponent : function() {

		var grid = new Ext.ux.tree.TreeGrid({
			width : 500,
			height : 300,
			checkModel: 'single',
			getNodes:function(treePanel){  
		        var startNode = treePanel.getRootNode();  
		        var r = [];  
		        var f = function(){  
		                r.push(this);  
		        };  
		  
		        startNode.cascade(f);  
		        return r;  
			},  
			columns : [{
						header : '编码',
						width : 150,
						dataIndex : 'code'
					}, {
						header : '金额',
						width : 100,
						dataIndex : 'amount'
					}, {
						header : '币种',
						width : 80,
						dataIndex : 'currency',
						tpl: new Ext.XTemplate('{currency:this.formatCurrency}', {
							formatCurrency: function(v) {
								var currencies=Tm.data.currency;
								if(v){
									for(i in currencies){
										if(currencies[i][0]==v){
											return currencies[i][1];
										}
									};					
								}
								return '';
							}
							}) 
					}, {
						header : '创建者',
						width : 50,
						dataIndex : 'createName'
					}, {
						header : '更新者',
						width : 50,
						dataIndex : 'lastUpdateName'
					}, {
						header : '付款期限',
						width : 100,
						dataIndex : 'deadline',
						tpl: new Ext.XTemplate('{deadline:this.formatDate}', {
							formatDate: function(v) {
						    	if(Ext.isEmpty(v)){
						    		return '';
						    	}else{
						    		var date = Date.parseDate(v, 'Y-m-d H:i:s', true); // returns null
						    		var returnString=date.format('Y-m-d');
						    		return returnString;
						    	}
							}
							}) 
					}, {
						header : '状态',
						width : 50,
						dataIndex : 'status',
						tpl: new Ext.XTemplate('{status:this.formatState}', {
							formatState: function(v) {
								var states=Tm.data.billStatus;
								if(v){
									for(i in states){
										if(states[i][0]==v){
											return states[i][1];
										}
									};					
								}
								return '';
							}
							}) 
					}, {
						header : '描述',
						width : 250,
						dataIndex : 'description'
					}],
			//dataUrl : 'bill/queryBillVoAndItsDetailVo.do?taskId=' + this.taskId,
			loader : new Ext.tree.TreeLoader({dataUrl:'bill/queryBillVoAndItsDetailVo.do?taskId=' + this.taskId}),
			listeners : {
				
				click : function(node, e) {
					var data = node.attributes;
					if (!data.billDetailId) {
						// bill
						var taskBillAddPanel = new Tm.task.TaskBillAddPanel({
									taskId:Ext.getCmp('taskBillPanel').taskId ,
									dataId : data.id
								});
						var billAddWindow = new Tm.common.CommonWindow({
									id : 'billAddWindow',
									title : '更新账单',
									items : taskBillAddPanel
								});
						billAddWindow.on('close', function(panel) {
							grid.loader.load(grid.root);

						});
						billAddWindow.show();
					} else {
						// detail
						var taskBillDetailAddPanel = new Tm.task.TaskBillDetailAddPanel(
								{	
									taskId:Ext.getCmp('taskBillPanel').taskId,
									dataId : data.billDetailId,
									billStatus : node.parentNode.attributes.status
								});
						var billDetailAddWindow = new Tm.common.CommonWindow({
									id : 'billDetailAddWindow',
									title : '更新账单明细',
									items : taskBillDetailAddPanel
								});
						 billDetailAddWindow.on('close', function(panel) {
							 grid.loader.load(grid.root);
						 });
						billDetailAddWindow.show();

					}
				},
				checkchange : function(node,bool) {  
			        if(!bool){  
			            return;  
			        }  
			        if(this.checkModel=='single'){  
			            var nodes =this.getNodes(this);  
			            if(nodes && nodes.length>0){  
			                for(var i=0,len=nodes.length;i<len;i++){  
			                    if(nodes[i].id!=node.id){  
			                        if(nodes[i].getUI().checkbox){  
			                            nodes[i].getUI().checkbox.checked = false;  
			                                nodes[i].attributes.checked=false;  
			                        }  
			                    }  
			                }  
			            }  
			        }  
			    }  
			}
		
		
		
		});
	  //  var loader = new Ext.tree.TreeLoader({dataUrl:grid.dataUrl});

		var toolBar = new Ext.Toolbar({
			hideBorders : true,
			buttons : [
//			           {
//						text : '刷新',
//						iconCls : 'act_queryIcon',
//						handler : function() {
//							grid.loader.load(grid.root);
//						}
//					}, {
//						xtype : 'tbseparator'
//					}
//					,
					{
						text : '新增账单',
						iconCls : 'act_addIcon',

						handler : function() {
							// var App = new Ext.App({});
							// App.setAlert('ok', "Form is invalid");
							var taskBillAddPanel = new Tm.task.TaskBillAddPanel({taskId:Ext.getCmp('taskBillPanel').taskId });
							var billAddWindow = new Tm.common.CommonWindow({
										id : 'billAddWindow',
										title : '新增账单',
										items : taskBillAddPanel
									});
							 billAddWindow.on('close', function(panel) {
								 grid.loader.load(grid.root);
							 });
							billAddWindow.show();
						}
					}, {
						xtype : 'tbseparator'
					}, {
						text : '新增账单明细',
						iconCls : 'act_addIcon',

						handler : function() {
							var TaskBillDetailAddPanel = new Tm.task.TaskBillDetailAddPanel(
									{taskId:Ext.getCmp('taskBillPanel').taskId });
							var billDetailAddWindow = new Tm.common.CommonWindow(
									{
										id : 'billDetailAddWindow',
										title : '新增账单明细',
										items : TaskBillDetailAddPanel
									});
							 billDetailAddWindow.on('close', function(panel) {
								 grid.loader.load(grid.root);
								 });
							billDetailAddWindow.show();
						}
					}, {
						xtype : 'tbseparator'
					}, {
						text : '删除',
						iconCls : 'act_deleteIcon',

						handler : function() {
							var nodes = grid.getChecked();
							if(nodes.length==0){
								return;
							}else{
								var node=nodes[0];
								if(node.attributes.billDetailId){
 									if(node.parentNode.attributes.status=='NEW'){
 										 Ext.Ajax.request({
 											 url : 'bill/deleteBillDetail.do',
 											 params : {
 											 id : node.attributes.billDetailId,
 											 },
 											 success : function(response, action) {
												App.setAlert('ok', '操作成功');
 												grid.loader.load(grid.root);

 											 }
 											
 											 });
 									}else{
										App.setAlert('notice', '只有[草稿]状态的账单下的账单明细可以被删除!');
									}
								
								}else{

									if( node.attributes.status=='NEW'){
										Ext.MessageBox.confirm('注意', '您确定要进行该操作',
												function(btn) {
													if (btn == 'yes') {
														Ext.Ajax.request({
															url : 'bill/deleteBill.do',
															params : {
																 id : node.attributes.id,
															},
															success : function(response, action) {
																	App.setAlert('ok', '操作成功');
																	grid.loader.load(grid.root);
															} 

														});
													} 
												});
									}else{
										App.setAlert('notice', '只有[草稿]状态的账单可以被删除!');
									}
								}
						
							}
//							 Ext.Ajax.request({
//							 url : 'role/saveOrUpdateRolePermission.do',
//							 params : {
//							 roleId : roleId,
//							 permissions :permissions
//							 },
//							 success : function(response, action) {
//							 App.setAlert('ok', '操作成功');
//							 },
//							 failure : function(response, action) {
//							 App.setAlert('error', '操作失败');
//							 }
//							
//							 });

						}
					}, {
						xtype : 'tbseparator'
					}, {
						text : '导出',
						iconCls : 'act_page_excel',

						handler : function() {
							alert('待开发');
						}
					}]
		});
		Ext.apply(this, {
					tbar : toolBar,
					items : [grid]
				});
		Tm.task.TaskBillPanel.superclass.initComponent.call(this);
	},
	loadData : function() {
		// console.dir(this.task);
		var taskId = this.taskId;
		if (taskId) {

			//			
			// var taskBillAddPanel = Ext.getCmp("taskBillAddPanel");
			// var form = taskBillAddPanel.form;
			// form.getForm().findField("code").setValue(bill.code);
			// form.getForm().findField("taskName").setValue(bill.taskName);
			// form.getForm().findField("compCnName").setValue(bill.compCnName);
			// form.getForm().findField("ownerAccount")
			// .setValue(bill.ownerAccount);
		}
	},

	listeners : {
		afterrender : function() {
			this.loadData();
		}
	}
});
